package zdori;


public class J15_Oop1 {

	/**
	 * @param args
	 */
	/*객체지향 개발기법
	 * oop 언어로 응용 프로그램을 개발하는 경우 문제 해결을 위해 실제 상황과 유사한 모델을 만들어야 함
	 * 
	 * 예들들어 직원 세금을 계싼하는 프로그램 작서
	 * 프로그램에서 회사를 표현하는 회사 객체가 필요 또한, 직원을 나타내는 직원 객체,세금을 나타내는 세금 객체 도 필요
	 * 
	 * 회사 직원 세금 객채를 자바프로그램에서 코드로 나타내는 방법에 대해 알아봄 
	 * 
	 * 모든 객체에는 2가지 성질이 있음
	 * 속성 property 객체가 할 수 있는 행동 action
	 * 현실세계에 존재하는 객체를 자바언어로 가져오는 경우에도 속성과 행위는 있어야 함
	 * 자바에서 속성은 field 행위는 method 라 함
	 * 단 필드와 메서드는 선택사항(생략 가능)임
	 * 
	 * 자바 객체를 만드는 방법은 ? 
	 * - 설계도를 이용 '차' 라는 객체를 만들려면 좋은 차로 만들어 주는 설계도를 참고
	 * oop에서 객체를 만들어 주는 설계도를 클래스 라 함
	 * 
	 * 클래스는 동일한 유형의 객체를 만드는 청사진/설계도 또는 템플릿임(중요)
	 * 붕어빵- 객체
	 * 붕어빵 틀 - 클래스
	 * 밀가루,팥 - 속성
	 * 
	 * 요약하자면 클래스는 프로그래머로 하여금 문제의 추상화를 만들 수 있게 해주는 oop 도구임
	 * oop에서 추상화 abstraction 은 실제 객체를 표현하기 위해 실제 객체에서 핵심적인 개념 또는 
	 * 기능을 뽑아 프로그래밍 객체로 만드는 행위를 말함
	 * 
	 * 
	 */
	
	
	
	
	
	public static void main(String[] args) {
		// TODO Start
		//클래스를 사용하지 않고 학생 객체 생성
		/*
		String name1 = "김태희";
		int stdno1 = 123456789;
		String addr1 = "부산 남구 문현동";
		int mp1 = 1234567890;
		
		String name2 = "송혜교";
		int stdno2 = 234567890;
		String addr2 = "부산 진구 전포동";
		int mp2 = 345678901;
		*/
		//클라스를 이용해서 학생 객체 생성
		/*
		Student tadheq = new Student();
		tadheq.name = "태희";
		tadheq.stdno = 123456789;
		tadheq.addr = "부산 남구 문헌동";
		tadheq.mp = 1234567890;
		
		Student suji = new Student();
		suji.name = "수지";
		suji.stdno = 123456789;
		suji.addr = "서울 광진구 자양동";
		suji.mp = 1234567890;
		*/
		
		//생성자를 이용한 학생 객체 생성
		Student one = new Student();
		System.out.println(one.name);
		
		Student two = new Student();
		System.out.println(two.name);
	}

}
//클래스 만들기 앞글자 대문자
	//class 클래스이름{
	//      클래스 몸체 (필드,메서드)
	// }
	
	//클래스 정의 
	//클래스 이름은 반드시 대문자로 시작
	//클래스 정의 시 클래스 이름 과 파일 이름은 동일해야 함
/*
*생성자
* 모든 클래스는 하나 이상의 생성자가 있어야 함
* 설령 메서드를 작성하지 않았더라도 컴파일러가 자동으로 만들어서 넣어줌
* 생성자는 일반 메서드와는 달리 void 나 return 을 사용하지 않음
* 생성자 이름은 클래스 이름과 동일해야 함
* */
class Student{
	//필드 선언
	String name;
	int stdno;
	String addr;
	int mp;
	
	//생성자 추가 - 객체를 초기화 하는데 사용
	public Student(){
		stdno = 12345;
		name = "아무개";
		addr = "서울";
		mp = 987654;
	}
	
}
//고객(Customer)클래스
//아이디 비밀번호 이름 주소 전화번호 이메일
class Customer{
	String id;
	String pw;
	String name;
	String addr;
	String hp;
	String eMail;
}
//상품(Product)클래스
//상품명 가격 종류 제조사 
class Product{
	String name;
	
}
//스타크래프트 2의 테란 유닛을 클래스로 정의
//생명력 에너지 방어력 광물 베스핀 보급품 생산시간